﻿#define _CRT_SECURE_NO_WARNINGS 1

//非对称之美：给出一个字符串，求最长非回文子字符串的长度
//贪心思想: 如果最长的回文子串是本身那么最长非回文子串则是字符串长度减-1
// (注意所有相同元素构成的字符串任意子集都是回文子字符串,此时最大非回文长度为0),
// 如果字符串本身不是回文字符串那么最长非回文子串则是字符串长度。
//#include <iostream>
//using namespace std;
//string s;
//// 判断是否全是相同字母
//bool CheckSame()
//{
//    for (int i = 0; i < s.size(); ++i)
//    {
//        if (s[i] != s[0])
//        {
//            return false;
//        }
//    }
//    return true;
//}
//// 判断s是不是回文串
//bool IsPalindrome()
//{
//    int left = 0, right = s.size() - 1;
//    while (left <= right)
//    {
//        if (s[left] != s[right])
//        {
//            return false;
//        }
//        left++;
//        right--;
//    }
//    return true;
//}
//
//int main()
//{
//    cin >> s;
//    int n = s.size();
//    // 如果字符全相同,证明没有最长回文字符串
//    if (CheckSame() == true)
//    {
//        cout << 0;
//    }
//    //如果s是回文串,返回n-1
//    else if (IsPalindrome() == true)
//    {
//        cout << n - 1;
//    }
//    //如果s不是回文串,返回n,这样才是最长的
//    else
//    {
//        cout << n;
//    }
//    return 0;
//}


//#include <iostream>
//#include <vector>
//#include <algorithm>
//using namespace std;
//
//int main()
//{
//    int n = 0, a = 0;
//    long long MaxCount = 0, count = 0;
//    vector<long long> v;
//    cin >> n;
//    v.resize(n);
//    for (int i = 0; i < n; i++)
//    {
//        cin >> v[i];
//        if (v[i] <= 0)
//        {
//            a++;
//        }
//    }
//    if (a == n)
//    {
//        sort(v.begin(), v.end());
//        cout << v[n - 1] << endl;
//    }
//    else
//    {
//        for (int i = 0; i < n; i++)
//        {
//            count += v[i];
//            MaxCount = max(count, MaxCount);
//            if (count < 0)
//            {
//                count = 0;
//            }
//        }
//        cout << MaxCount << endl;
//    }
//    return 0;
//}


//#include <iostream>
//#include <string>
//#include <algorithm>
//using namespace std;
//
//int main()
//{
//    string str;
//    int MaxLength = 0;
//    cin >> str;
//    for (int i = 0; i < str.size(); i++)
//    {
//        for (int j = i + 1; j < str.size(); j++)
//        {
//            int left = i, right = j;
//            while (right > left)
//            {
//                if (str[left] != str[right])
//                {
//                    break;
//                }
//                left++;
//                right--;
//            }
//            if (right > left)
//            {
//                MaxLength = max(MaxLength, j - i + 1);
//            }
//        }
//    }
//    cout << MaxLength << endl;
//    return 0;
//}


//#include <iostream>
//using namespace std;
//
//int main()
//{
//    long long a = 0, h = 0, b = 0, k = 0;
//    long long count = 0;
//    cin >> a >> h >> b >> k;
//    while (h > 0 && k > 0)
//    {
//        count += b + a;
//        k -= a;
//        h -= b;
//    }
//    if (h > 0)
//    {
//        count += 10 * a;
//    }
//    if (k > 0)
//    {
//        count += 10 * b;
//    }
//    cout << count << endl;
//    return 0;
//}


//#include <iostream>
//#include <vector>
//#include <algorithm>
//using namespace std;
//
//int main()
//{
//    int n = 0;
//    long long k = 0, count = 0, MaxAdd = 0;
//    vector<long long> v;
//    vector<long long> maxv;
//    cin >> n;
//    v.resize(n);
//    maxv.resize(n, 0);
//    for (int i = 0; i < n; i++)
//    {
//        cin >> v[i];
//        if (v[i] <= 0)
//        {
//            
//            if (maxv[k] != 0)
//            {
//                k++;
//            }
//        }
//        else
//        {
//            maxv[k] += v[i];
//        }
//    }
//    for (int i = 0; i < k; i++)
//    {
//        MaxAdd = max(maxv[k], MaxAdd);
//    }
//    cout << MaxAdd << endl;
//    return 0;
//}